# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/7/4 0004 22:21
@Author : 测试开发工程师
@File : 21. 蚊子企业微信接口测试实战.py
@Software: PyCharm
============================
"""


"""
1. 接口测试基础
2. 接口测试流程
3. 接口测试实战演练
前后端分离 ： 
    1. 前端通过 nginx 代理（页面的表单操作），调用后端的接口，后端逻辑判断 - 操作数据库。
    2. 数据库返回数据到后端接口，接口返回给前端
    客户端  （请求） ->  接口 （调用方法或实现） ->  服务端 
    服务端  (给出结果)-> 接口 （响应）  ->   客户端
接口 ：API（） 对外界交互的数据通道

接口测试 ： 单元测试 ->   集成测试（接口）   ->   UI测试
HTTP协议： 超文本传输协议
Restful 规范
    1. 每一个  URL  代表一种资源
    2. 客户端和服务端之间，传递这种资源的某种表现层
    3. 客户端通过四个 HTTP 动词（get put post delete），对服务端资源进行操作，实现变现层状态转化
"""

"""
项目流程：
  需求分析 -> 测试设计 ->  测试用例评审 -> 测试执行：冒烟，手工，自动化，性能，安全 ->  验收 -> 预发布 -> 上线
企业微信 API 文档 ： https://work.weixin.qq.com/api/doc
企业ID： corpid -  ww2ae352c9c950fa71            secret - LMyamNkveenclfnn_-Ajj51tsr3OfnEyoz0RQINR6Cg

接口用例编写思路：
    基本功能测试： 冒烟测试  正常流程覆盖测试
    基于输入域的测试 ： 
        1-边界值测试  2-特殊字符测试  
        3-参数类型测试（int str float list dict。错误会报空指针异常）    4-必选参数校验（不传）
        5-组合参数校验（因果图组合）  6-排重逻辑（重复的，新增：多次新增）  
        7-接口幂等性（重复请求，前后端会做处理：避免重发，导致数据产生错误）  --  扣钱，登陆，下订单：因网络因素等，保证数据一致性
    性能测试
    安全测试 ：
         Redis 故障降级测试（缓存：获取 token ,会先从 redis 查询。不存在会从服务获取）    
         redis 异常，会使服务器压力增大。
            开发配合清空 redis 中的 key,正常会从服务端获取值
            开发配合恢复 redis - 重启
            redis 服务器停掉
         服务故障转移测试 ： 保证数据的正确性
            db 故障注入，接口测试转移，是否会造成数据丢失。
            异常断电等，启动数据恢复的策略
            线上会把服务部署在不同机器上面，多个服务指向同一个数据库（降低服务器压力，负载均衡，可用性高）                                    
"""

